package com.epin.util;

import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map; 



public class MapUtil {
	
	/**
     * <p>获取单个数值对的map</p>
     * 
     * @param key 关键词
     * @param value 值
     * @return Map<>
     * 
     * @author fujiajun
     */
    public static Map<String, Object> getOneHash(String key, Object value) {
		Map<String, Object> map = new HashMap<>();
		map.put(key, value);
		return map;
	}
    
    
    /**
     * <p>将一个bean转为map</p>
     * 
     * @param obj bean对象
     * @return Map<>
     * 
     * @author fujiajun
     */
    public static Map<String, Object> transBeanToMap(Object obj) {  
    	  
    	if (obj == null) {
    	    return null;
    	}
    	
    	Map<String, Object> map = new HashMap<>();
    	
    	try {
    		// 获取对象bean信息
    	    BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
    	    // 获取属性数组
    	    PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
    	    
    	    for (PropertyDescriptor property: propertyDescriptors) {
    	        String key = property.getName();
    	        
    	        // 过滤class属性
    	        if (!key.equals("class")) {
    	            // 得到属性对应的getter方法
    	            Method getter = property.getReadMethod();
    	            Object value = getter.invoke(obj);
    	            map.put(key, value);
    	        }
    	    }
    	} catch(Exception e) {
    		e.printStackTrace();
    	    System.err.println("Bean转Map发生错误：" + e);
    	}

    	return map; 
    }

}
